package com.jgzx.constant.inventory;

import cn.hutool.core.util.StrUtil;

/**
 * 入库单据类型【采购入库、调拨入库、组装入库、拆分入库、销售退货、报溢单】
 * @author libo
 * @date 2021-03-19
 */
public enum InStockBillTypeEnum {

    /** 采购入库【CGRK】 */
    PRODUCTION_IN_STOCK("CGRK", "采购入库"),
    /** 调拨入库【DBRK】 */
    TRANSFER_IN_STOCK("DBRK", "调拨入库"),
    /** 组装入库【ZZRK】 */
    ASSEMBLE_IN_STOCK("ZZRK", "组装入库"),
    /** 拆分入库【CFRK】 */
    SPLIT_IN_STOCK("CFRK", "拆分入库"),
    /** 销售退货【XSTH】 */
    SALE_IN_STOCK("XSTH","销售退货"),
    /** 报溢单【BYDJ】 */
    OVERFLOW_IN_STOCK("BYDJ","报溢单"),
    /** 其它入库【QTRK】 */
    OTHER_IN_STOCK("QTRK","其它入库"),
    /** 材料退库【CLTK】*/
    REQUISITION_IN_STOCK("CLTK", "材料退库"),
    /** 生产入库【CPRK】 */
    PRODUCT_IN_STOCK("CPRK", "生产入库"),
    /** 期初入库【QCRK】 */
    PERIOD_IN_STOCK("QCRK", "期初入库"),
    ;

    private final String value;
    private final String showName;

    /**
     * @param value 值
     * @param showName 显示名称
     */
    InStockBillTypeEnum(String value, String showName){
        this.value = value;
        this.showName = showName;
    }

    /**
     * 通过单据类型值获取枚举对象
     * @param value 单据类型值
     * @return 单据类型枚举
     */
    public static InStockBillTypeEnum getInStockBillTypeByValue(String value){
        for(InStockBillTypeEnum billCategory : InStockBillTypeEnum.values()){
            if(StrUtil.equals(value, billCategory.value())){
                return billCategory;
            }
        }
        return null;
    }

    public String value() {
        return this.value;
    }

    public String showName() {
        return this.showName;
    }
}
